class Event:
    __slots__ = ['callback_set']

    def __init__(self):
        self.callback_set = set()

    def register(self, callback):
        self.callback_set.add(callback)

    def unregister(self, callback):
        self.callback_set.remove(callback)

    def emit(self, *args, **kwargs):
        for callback in self.callback_set:
            callback(*args, **kwargs)


class EventBus:
    player_interaction = Event()


EVENT_BUS = EventBus()
